import type { SelectorSyntaxType } from '../../../types/constants'
import { StringUtils } from '../base/string'

export class SyntaxUtils {
  /**
   * 检查选择器是否包含特定语法
   * @param selector 选择器字符串
   * @param syntaxType 要检查的语法类型
   * @returns 是否包含该语法
   */
  static hasSelectorSyntax(selector: string, syntaxType: SelectorSyntaxType): boolean {
    if (!selector || !syntaxType)
      return false

    // 获取语法的基本名称（去掉括号）
    const syntaxBase = syntaxType.replace(/[()]/g, '')

    // 创建正则表达式匹配模式
    const pattern = new RegExp(
      `(?<!\\\\)${StringUtils.escapeRegExp(syntaxBase)}\\([^)]*\\)`,
      'i',
    )

    return pattern.test(selector)
  }
}
